<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>



  


  
  
  
  
  
  <title>MPEG2Dec3</title>
  <link rel="stylesheet" type="text/css" href="../../avisynth.css">
<!-- Automatically generated, don't change: $Id: mpeg2dec3.htm,v 1.3 2005/10/31 14:55:54 macpaille Exp $ -->
</head>


<body>




<h1>MPEG2Dec3</h1>




<h2>R&eacute;sum&eacute;</h2>




<b>auteurs:</b> MarcFD, Nic, trbarry, Sh0dan et d'autres
<br>




<b>version:</b> 1.10.1<br>




<b>cat&eacute;gorie:</b> Plugins (source)
d&eacute;codeurs MPEG<br>




<b>t&eacute;l&eacute;chargement:</b>&nbsp;<a href="http://www.avisynth.org/warpenterprises/">http://www.avisynth.org/warpenterprises/</a>
<br>




<b>outils n&eacute;cessaires:</b>&nbsp;&nbsp;
<hr>
<h2>Description</h2>




Ce filtre renvoie une sortie dans les formats de couleur RGB, YUY2 et
YV12.<br>




C'est un d&eacute;codeur MPEG-2 capable de d&eacute;coder tout
flux MPEG-2 lu par DVD2AVI 1.76 / 1.77.3 / 1.83x (et d'autres). Il
supporte &eacute;galement les flux HDTV, mais seulement avec <a href="http://www.trbarry.com/DVD2AVIT3.zip"><cite>DVD2AVI
1.83.5</cite></a>. (C'est une version modifi&eacute;e
de MPEG2Dec2). Les fonctions suppl&eacute;mentaires sont par
exemple le support des sorties YV12, YUY2 et RGB32 (bien qu'il soit
recommand&eacute; d'utiliser les routines de conversion de format
de couleur d'AviSynth), contr&ocirc;le de l'entrelacement, post
processing int&eacute;gr&eacute;, filtrage sur la luminance,
etc...
<h2>Exemples d'utilisation de l'ensemble de filtre de MPEG2Dec3:</h2>




Tout les script ci dessous sont seulement des exemples.<br>




Vous devez tout d'abord ajouter cette ligne dans votre script AviSynth:<br>




<pre>LoadPlugin ("MPEG2Dec3.dll")</pre>




<h3>Utilisation simple de MPEG2Dec3</h3>




Pour faire du d&eacute;codage en YV12.
<pre>MPEG2Source("dvd.d2v")</pre>




<p>Pour utiliser le post processing (post
traitement),&nbsp;ici du deblocking (att&eacute;nuation de
l'effet de blocs) seulement.</p>




<pre>MPEG2Source("dvd.d2v", cpu=4)</pre>




<p>C'est mieux d'utiliser un post traitement bas&eacute; sur
les champs dans le cas de sources entrelac&eacute;es.</p>




<pre>MPEG2Source("dvd.d2v", cpu=4, iPP=true)</pre>




<p>Si vous avez un intel Pentium 4, vous pouvez forcer
l'utilisation du sse2 pour l'idct.</p>




<pre>MPEG2Source("dvd.d2v", idct=5)</pre>




<p>Pour utiliser un post traitement personnalis&eacute;, ici
seulement du deringing (att&eacute;nuation de l'effet baveux des
contours).</p>




<pre>MPEG2Source("dvd.d2v", cpu2="ooooxx")</pre>




<h3>Conversions d'espaces de couleurs</h3>




Pour convertir en YUY2.
<pre>MPEG2Source("dvd.d2v")<br>YV12toYUY2()</pre>




<p>Pour convertir une source YV12 en YUY2 progressif.</p>




<pre>MPEG2Source("dvd.d2v")<br>YV12toYUY2(interlaced=false)</pre>




<p>Pour convertir en RGB24.</p>




<pre>MPEG2Source("dvd.d2v")<br>YV12toRGB24()<br>FlipVertical() #YV12-&gt;BGR24 cette conversion retourne nativement l'image</pre>




<p>Pour convertir une source YV12 en RGB24 progressif.</p>




<pre>MPEG2Source("dvd.d2v")<br>YV12toRGB24(interlaced=false)<br>FlipVertical() #YV12-&gt;BGR24 cette conversion retourne nativement l'image</pre>




<h3>Filtres YV12 suppl&eacute;mentaires</h3>




Pour diminuer la luminosit&eacute;.
<pre>LumaFilter(-10, 0.9)</pre>




<p>Pour augmenter la luminosit&eacute;.</p>




<pre>LumaFilter(+10, 1.1)</pre>




<p>Vous pouvez bien s&ucirc;r param&eacute;trer avec les
valeurs que vous voulez.<br>




Voir la partie Syntaxe pour plus d'information.</p>




<h2>Syntaxe des filtres de MPEG2Dec3:</h2>




<h3>MPEG2Source</h3>




<p><code>MPEG2Source</code> (<var>string "d2v",
int "cpu" int "idct" bool "iPP", int "moderate_h", int "moderate_v",
bool "showQ", bool "fastMC", string
"cpu2"</var>)</p>




<p><var>d2v</var> : <br>




Votre fichier projet DVD2AVI. (*.d2v)</p>




<p><var>cpu</var> : de 0 &agrave; 6.<br>




Param&egrave;tres CPU similaires &agrave; ceux
trouv&eacute;s dans le d&eacute;codeur de DivX.<br>




- 0 : Pas de post traitement<br>




- 1 : DEBLOCK_Y_H<br>




- 2 : DEBLOCK_Y_H, DEBLOCK_Y_V<br>




- 3 : DEBLOCK_Y_H, DEBLOCK_Y_V, DEBLOCK_C_H<br>




- 4 : DEBLOCK_Y_H, DEBLOCK_Y_V, DEBLOCK_C_H, DEBLOCK_C_V<br>




- 5 : DEBLOCK_Y_H, DEBLOCK_Y_V, DEBLOCK_C_H, DEBLOCK_C_V, DERING_Y<br>




- 6 : DEBLOCK_Y_H, DEBLOCK_Y_V, DEBLOCK_C_H, DEBLOCK_C_V, DERING_Y,
DERING_C<br>




(Y=luma C=chroma, H=horizontal,&nbsp; V=vertical)<br>




Par d&eacute;faut : 0</p>




<p><var>idct</var> : de 1 &agrave; 5.<br>




iDCT : algorithme iDCT utilis&eacute;.<br>




0 : Valeur par d&eacute;faut&nbsp;(dans le
fichier&nbsp;.d2v)<br>




1 : 32 bit MMX<br>




2 : 32 bit SSEMMX<br>




3 : 64 bit FPU<br>




4 : 64 bit IEEE-1180 Reference<br>




5 : 32 bit SSE2 (pour P4)<br>




6 : Skal's SSEMMX iDCT (la plus rapide)<br>




7 : SimpleiDCT (iDCT tr&egrave;s pr&eacute;cise issue du projet
XviD)<br>




par d&eacute;faut&nbsp;: 0</p>




<p><var>iPP</var> :<br>




Pour utiliser un post traitement bas&eacute; sur les champs de la
video. Convient mieux si vous voulez d&eacute;sentrelacer.<br>




- True : Bas&eacute; sur les champs<br>




- False : Bas&eacute; sur les images (par d&eacute;faut)</p>




<p><var>moderate_h</var>, <var>moderate_v</var>
:<br>




Ajustement pr&eacute;cis de la force du post traitement.<br>




Les valeurs plus faibles donnent un deblocking plus fort. A utiliser
avec pr&eacute;cautions.<br>




Par d&eacute;faut&nbsp;: moderate_h=20, moderate_v=40</p>




<p><var>showQ</var> :<br>




Pour voir le quantificateur de chaque MB (MacroBlock).<br>




Assez amusant &agrave; utiliser&nbsp;^^<br>




Par d&eacute;faut : false</p>




<p><var>fastMC</var> :<br>




Code de compensation de mouvement plus rapide de Vlad.<br>




Tr&egrave;s faible gain de vitesse, et la pr&eacute;cision est
diminu&eacute;e. Ce param&egrave;tre est l&agrave; pour test, et sera
probablement supprim&eacute; dans les prochaines versions. Pour cpu ssemmx seulement.<br>




Par d&eacute;faut : false</p>




<p><var>cpu2</var> :<br>




Param&egrave;tre de post traitement personnalisables. Vous devez entrer une cha&icirc;ne de 6 caract&egrave;res.
Chaque croix (x) activera le post traitement correspondant:</p>




<pre>exemple :<br>"oxoxox"<br>123456<br>activera le post traitement chroma seulement</pre>




<p>1 : deblocking&nbsp;horizontal sur luma<br>




2 : deblocking&nbsp;vertical sur luma<br>




3 : deblocking&nbsp;horizontal sur chroma<br>




4 : deblocking&nbsp;vertical sur chroma<br>




5 :&nbsp;deringing&nbsp;horizontal sur luma<br>




6 :&nbsp;deringing horizontal sur chroma<br>




Par&nbsp;d&eacute;faut : " " (d&eacute;sactiv&eacute;)</p>




<h3>LumaFilter</h3>




<code>LumaFilter</code> (<var>clip, integer "lumoff",
float "lumgain"</var>)
<p>La transformation est effectu&eacute;e de la
mani&egrave;re suivante: yy = (y*lumgain)+lumoff</p>




<p><var>lumoff</var> : <br>




D&eacute;calage de luminosit&eacute;.<br>




Par&nbsp;d&eacute;faut&nbsp;= -2 (pour iago ^^)</p>




<p><var>lumgain</var> : <br>




Gain de luminosit&eacute;..<br>




Par&nbsp;d&eacute;faut&nbsp;= 1</p>




<h3>YV12toRGB24</h3>




<code>YV12toRGB24</code> (<var>clip, bool
"interlaced", bool "TVscale"</var>)
<p>YV12-&gt;BGR24 cette conversion renverse l'image
nativement. Utilisez <a href="../corefilters/flip.htm">FlipVertical</a>
apr&egrave;s.</p>




<p><var>interlaced</var> :<br>




Mettez ce param&egrave;tre sur true (vrai) quand votre source est
entrelac&eacute;e; ceci pour que l'entrelacement de chroma soit
correct.<br>




Pour un flux progressif, utiliser false (faux) donnera des couleurs
plus pr&eacute;cises et plus r&eacute;elles.<br>




Par&nbsp;d&eacute;faut : true</p>




<p><var>TVscale</var> :<br>




La m&ecirc;me option que dans DVD2AVI. Elle peut &ecirc;tre
invers&eacute;e. Essayez avec et sans et conserver votre favoris.<br>




Par&nbsp;d&eacute;faut&nbsp;: false</p>




<h3>YV12toYUY2</h3>




<p><code>YV12toYUY2</code> (<var>clip, bool
"interlaced", bool
"tff"</var>)</p>




<p><var>interlaced</var> :<br>




Mettez ce param&egrave;tre sur true (vrai) quand votre source est
entrelac&eacute;e; ceci pour que l'entrelacement de chroma soit
correct.<br>




Pour un flux progressif, utiliser false (faux) donnera des couleurs
plus pr&eacute;cises et plus r&eacute;elles.<br>




Par&nbsp;d&eacute;faut : true</p>




<p><var>tff</var> :<br>




Top Field First (champs du dessus en premier). Mettez ce
param&egrave;tre sur False si vous avez une source Bottom Field
First (champ du bas en premier).<br>




Par&nbsp;d&eacute;faut&nbsp;: true</p>




<h3>BlindPP</h3>




<p><code>BlindPP</code> (<var>clip, int
"quant", int "cpu", str "cpu2", bool "iPP", int "moderate_h", int
"moderate_v"</var>)</p>




<p>Pour le deblocking et le deringing de n'importe quel type de
source se basant sur une compression DCT. Bien s&ucirc;r, il est
moins pr&eacute;cis que le post traitement du d&eacute;codeur
mais il est cependant tr&egrave;s efficace. Il n&eacute;cessite une
entr&eacute;e en YV12.</p>




<p><var>quant</var> :<br>




Quantificateur &eacute;mul&eacute;. Utilisez une valeur
&eacute;lev&eacute;e pour augmenter l'agressivit&eacute;.
En utilisant une valeur proche de votre source, vous obtiendrez un post
traitement tr&egrave;s pr&eacute;cis.<br>




Par&nbsp;d&eacute;faut : 2</p>




<p><var>cpu</var>, <var>cpu2</var>, <var>iPP</var>,
<var>moderate_h</var>, <var>moderate_v</var>
:<br>




M&ecirc;me param&egrave;tres que pour le post
traitement de&nbsp;MPEG2Source.<br>




Par&nbsp;d&eacute;faut&nbsp;: cpu=6, cpu2="", iPP=false,
moderate_h=20, moderate_v=40</p>




<h2>Historique</h2>




<b>bas&eacute; sur MPEG2Dec2 (save-oe CVS 28.09.2002)</b>
<ul>




  <li><u>betas versions (de 1 &agrave; 6)</u>
    
    
    
    <ul>




      <li>Ajout du post traitement bas&eacute; sur les champs
par Nic&nbsp;</li>




      <li>Hi&eacute;rarchise le choix des filtre iDCT / filtrage luma</li>




      <li>Corrige le code MMX du filtrage luma (3 bugs au moins)</li>




      <li>Optimisation de la conversion YV12-&gt;YUY2 (+10 %
de vitesse)</li>




      <li>Un bug du post traitement est corrig&eacute;. Un
peu plus lent maintenant.</li>




      <li>D&eacute;sactivation des optimisations SSE2 de
trbarry.</li>




      <li>Ajoute le param&egrave;tre de debugage showQ.</li>




      <li>Ajout &nbsp;du nouveau code de Vlad pour la
compensation de mouvement (3dnow/ssemmx) / re&eacute;criture de
ssemmx</li>





      <li>Rend fonctionnel le transfert de m&eacute;moire MMX pour la recherche (+3% de gain de vitesse)</li>




      <li>Ajoute le support du Re&eacute;chantillonnage pour un clip entrelac&eacute;.<br>




      </li>




    
    
    
    </ul>




  </li>




  <li> <u>v 0.9 (09.11.02)</u>
    
    
    
    <ul>




      <li>gros nettoyage du code</li>




      <li>nouvelle conception du l'interface AviSynth</li>




      <li>Support du YV12</li>




      <li>Support du RGB24</li>




      <li>autres choses diverses<br>




      </li>




    
    
    
    </ul>




  </li>




  <li> <u>v 0.91 (10.11.02)</u>
    
    
    
    <ul>




      <li>nettoyage du code</li>




      <li>ajout des param&egrave;tres de chargement par d&eacute;faut dans le fichier MPEG2Dec3.def</li>




      <li>mode bff dans SeparateFieldsYV12<br>




      </li>




    
    
    
    </ul>




  </li>




  <li> <u>v 0.92 (17.11.02)</u>
    
    
    
    <ul>




      <li>publication du code</li>




      <li>impl&eacute;mentation de blindPP
      </li>



    
    
    
    </ul>




  </li>



  <li> <u>v 0.93 (25.11.02)</u>
    
    
    
    <ul>




      <li>conversion total du code pour le YV12...</li>




      <li>...qui corrige les bugs YV12</li>




      <li>moins de m&eacute;moire n&eacute;cessaire</li>




      <li>copie rapide MMX (recherche plus rapide)<br>




      </li>




    
    
    
    </ul>




  </li>




  <li> <u>v 0.94 (08.12.02)</u>
    
    
    
    <ul>




      <li>petite correction de bug<br>




      </li>




    
    
    
    </ul>




  </li>




  <li> <u>v 1.00 (19.01.03)</u>
    
    
    
    <ul>




      <li>version finale</li>




      <li>&eacute;limination de tout les bug connus<br>




      </li>




    
    
    
    </ul>




  </li>




  <li> <u>v 1.01 (inconnu) - trbarry</u>
    
    
    
    <ul>




      <li>correction d'un bug avec HDTV (0x21 PID cod&eacute; en dur)<br>




      </li>




    
    
    
    </ul>




  </li>




  <li> <u>v 1.02 (12.05.03) - Nic</u>
    
    
    
    <ul>




      <li>malloc align&eacute;e trait&eacute;es diff&eacute;remment<br>




      </li>




    
    
    
    </ul>




  </li>




  <li> <u>v 1.03 (12.05.03) - Nic</u>
    
    
    
    <ul>




      <li>Support maintenant les fichiers D2V de DVD2AVI 1.77.3 et ceux de la version 1.76<br>




      </li>




    
    
    
    </ul>




  </li>




  <li> <u>v 1.04 (12.05.03) - Nic</u>
    
    
    
    <ul>




      <li>Suppression d'un fuite m&eacute;moire, un peu plus rapide<br>




      </li>




    
    
    
    </ul>




  </li>




  <li> <u>v 1.05a (12.05.03) - trbarry</u>
    
    
    
    <ul>




      <li>version de test de trbarry pour optimisations<br>




      </li>




    
    
    
    </ul>




  </li>




  <li> <u>v 1.06 (24.05.03)</u>
    
    
    
    <ul>




      <li> Nic: ajout de 2 nouvelles&nbsp;iDCT: Skal (la plus rapide, idct=6)
&amp; SimpleiDCT (tr&egrave;s pr&eacute;cise, idct=7)</li>




      <li>Nic: support pour une utilisation externe de MPEG2Dec3.dll sans
AviSynth<br>




(Voir le code source pour example.zip et GetPic)</li>




      <li>trbarry: ajout d'une optimisation&nbsp;Add_Block et optimisation du d&eacute;codage des blocs pour machines SSE2</li>




      <li>sh0dan: Utilise la fonction rapide BitBlt d'AviSynth (quand cela est possible) pour les copies m&eacute;moire</li>




      <li>Nic:&nbsp;optimisations g&eacute;n&eacute;rales :) Plus rapide sur toutes les machines test&eacute;s.<br>




      </li>




    
    
    
    </ul>




  </li>




  <li> <u>v 1.07 (6.06.03)</u>
    
    
    
    <ul>




      <li> Nic &amp; Sh0dan: correction de bugs, meilleure stabilit&eacute; sur des flux endommag&eacute;s<br>




      </li>




    
    
    
    </ul>




  </li>




  <li> <u>v 1.08 (8.06.03)</u>
    
    
    
    <ul>




      <li> trbarry: optimisation de Simple_iDCT, beaucoup plus rapide maintenant :)</li>




      <li>Nic: ajout de CPUCheck, oublie de corriger&nbsp;Lumafilter la
derni&egrave;re fois (merci ARDA!), robUx4 m'a aid&eacute; &agrave;
transformer simple_idct en un
fastcall<br>




      </li>




    
    
    
    </ul>




  </li>




  <li> <u>v 1.09 (26.07.03)</u>
    
    
    
    <ul>




      <li>Nic: maintenant,&nbsp;skal's Sparse iDCT est utilis&eacute; &agrave; la place de idct=6
(la plus rapides)</li>




      <li>Nic: ajout de Luminance_Filter de DVD2AVI 1.77.3,
pour les fois o&ugrave; Luminance_Filter est utilis&eacute; dans le fichier .d2v<br>




      </li>




    
    
    
    </ul>




  </li>




</ul>




<ul>




  <li> <u>v 1.10 (28.07.03)</u> </li>




  
  
  
  <ul>




    <li>Nic: correction d'un probl&egrave;me avec Luminance_filter dans les fichiers D2V de la version 1.77.3<br>




    </li>




  
  
  
  </ul>




  <li> <u>v 1.10.1 (23.05.05)</u>
    
    
    
    <ul>




      <li>Kassandro: suppression de la supposition "luma pitch = luma
width". N&eacute;cessaire pour&nbsp; AviSynth v2.57 et ult&eacute;rieurs.</li>




    
    
    
    </ul>




  </li>




</ul>




<h2>Remerciements&nbsp;</h2>




Chia-chen Kuo, auteur de DVD2AVI<br>




Peter Gubanov,&nbsp;auteur de MMX/SSEMMX iDCT<br>




Dmitry Rozhdestvensky,&nbsp;auteur de SSE2 iDCT<br>




Miha Peternel, auteur de Floating Point iDCT et de Reference iDCT<br>




Mathias Born, auteur de MPEG2Dec
<p>Remerciement sp&eacute;cial &agrave; Nic, pous les
fonctions de post traitement qui ont rendu MPEG2Dec3 possible.</p>




<p>1.01 et ult&eacute;rieures: Nic, trbarry, sh0dan<br>




Remerciement &agrave; Skal pour l'utilisation de son algorithme iDCT (<a href="http://skal.planet-d.net">http://skal.planet-d.net</a>)</p>




<p><kbd>$English date: 2005/08/11 21:11:50 $<br>




French translation: 2005/10/31 JasonFly <a href="mailto:macpaille@users.sourceforge.net">macpaille@users.sourceforge.net</a></kbd></p>




</body>
</html>
